package com.sqs.enumration;

import lombok.Getter;

import java.util.Optional;

/**
 * AI 对话角色类型枚举
 */
@Getter
public enum AIRoleType {
    ASSISTANT(1, "assistant"),
    USER(2, "user"),
    SYSTEM(3, "system");

    /** 状态码或 id */
    private final int code;
    /** 对应的 role 字符串，用于 API 交互 */
    private final String role;

    AIRoleType(int code, String role) {
        this.code = code;
        this.role = role;
    }

    /**
     * 根据 code 获取枚举实例
     * @param code 角色编码
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 如果无效 code
     */
    public static AIRoleType getByCode(int code) {
        for (AIRoleType t : values()) {
            if (t.code == code) {
                return t;
            }
        }
        throw new IllegalArgumentException("无效的 AIRoleType 编码: " + code);
    }

    /**
     * 根据 role 字符串获取枚举实例
     * @param role 角色名称（如 "assistant"、"user"、"system"）
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 如果无效 role
     */
    public static AIRoleType getByRole(String role) {
        if (role == null) {
            throw new IllegalArgumentException("role 不能为空");
        }
        for (AIRoleType t : values()) {
            if (t.role.equalsIgnoreCase(role)) {
                return t;
            }
        }
        throw new IllegalArgumentException("无效的 AIRoleType role: " + role);
    }

    /**
     * 根据枚举实例获取 role 字符串
     * @param type AIRoleType 实例
     * @return 对应的 role 文本
     */
    public static String getRoleString(AIRoleType type) {
        if (type == null) {
            return null;
        }
        return type.getRole();
    }
}
